package com.sleep.drug_traceability.service;

import com.sleep.drug_traceability.dao.pojo.ManInfo;
import com.sleep.drug_traceability.dao.pojo.SelInfo;
import com.sleep.drug_traceability.vo.Result;
import com.sleep.drug_traceability.vo.params.OneParam;
import com.sleep.drug_traceability.vo.params.PwdParam;
import com.sleep.drug_traceability.vo.params.SelectParam;
import com.sleep.drug_traceability.vo.params.TwoParam;

/**
 * @author Sleep-6000
 * @date 2022/4/27
 */
public interface InfoService {
    /**
     * 获取药品生产商的用户信息，显示在个人中心页面
     * @param token token
     * @return 用户信息
     */
    Result getManInfo(String token);

    /**
     * 修改密码
     * @param pwdParam 新旧密码参数
     * @param token token
     * @return Result
     */
    Result changePwd(PwdParam pwdParam, String token);

    /**
     * 修改电话号码
     * @param oneParam 新电话号码
     * @param token token
     * @return Result
     */
    Result changePho(OneParam oneParam, String token);

    /**
     * 修改负责人
     * @param oneParam 新负责人
     * @param token token
     * @return Result
     */
    Result changeLegal(OneParam oneParam, String token);

    /**
     * 修改联系方式
     * @param oneParam 新联系方式
     * @param token token
     * @return Result
     */
    Result changeContact(OneParam oneParam, String token);

    ManInfo getManInfoByUserId(Long id);

    /**
     * 药品生产商的药品运输数据的页面，获取药品名称列表和销售商名称列表
     * @param token token
     * @return 药品名称列表和销售商名称列表
     */
    Result getDrugName(String token);

    /**
     * 药品生产商的药品运输数据的页面，根据选择的药品名称，获取对应的药品批号列表
     * @param param 选择的药品名称
     * @return 药品批号列表
     */
    Result getBatchNum(OneParam param);

    /**
     * 药品生产商的药品运输数据的页面，根据选择的药品名称和药品批号，获取对应的药品溯源编码
     * @param twoParam 选择的药品名称和药品批号
     * @return 药品溯源编码
     */
    Result getCode(TwoParam twoParam);

    /**
     * 获取销售商的用户信息，显示在个人中心页面
     * @param token token
     * @return 用户信息
     */
    Result getSelInfo(String token);

    /**
     * 销售商的药品购买数据的页面
     * 从drug_tra（存储药品运输数据的表）中获取与该销售商名称一致的药品名称列表
     * @param token token
     * @return 药品名称列表
     */
    Result getDrugTra(String token);

    SelInfo getSelInfoByUserId(Long id);

    /**
     * 销售商的药品购买数据的页面，根据选择的药品名称，获取药品生产商名称列表
     * @param param 选择的药品名称
     * @param token token
     * @return 药品生产商名称列表
     */
    Result getManName(OneParam param, String token);

    /**
     * 销售商的药品购买数据的页面，根据选择的药品名称和药品生产商名称，获取药品批号列表
     * @param twoParam 选择的药品名称和药品生产商名称
     * @param token token
     * @return 药品批号列表
     */
    Result getBatchTra(TwoParam twoParam, String token);

    /**
     * 销售商的药品购买数据的页面，根据选择的药品名称、药品生产商名称和药品批号，获取对应的药品溯源编码
     * @param param 选择的药品名称、药品生产商名称和药品批号
     * @param token token
     * @return 药品溯源编码
     */
    Result getCodeTra(SelectParam param, String token);

    /**
     * 销售商的消费者数据的页面，获取该销售商所拥有的药品名称列表
     * @param token token
     * @return 药品名称列表
     */
    Result getDrugCon(String token);

    /**
     * 销售商的消费者数据的页面，根据选择的药品名称，获取药品对应的药品批号列表
     * @param param 选择的药品名称
     * @param token token
     * @return 药品批号列表
     */
    Result getBatchCon(OneParam param, String token);

    /**
     * 销售商的消费者数据的页面，根据选择的药品名称和药品批号，获取药品溯源编码
     * @param twoParam 选择的药品名称和药品批号
     * @param token token
     * @return 药品溯源编码
     */
    Result getCodeCon(TwoParam twoParam, String token);

    /**
     * 获取监管部门的用户信息，显示在个人中心页面
     * @param token token
     * @return 用户信息
     */
    Result getSupInfo(String token);
}
